using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using FrameWork.Source.FrameWork;

namespace Boomer.Source.FrameWork.State_and_Screen_Manager.Screen_Manager
{
    class IScreen
    {
        protected ScreenManager m_pScreenManager;
        /// <summary>
        /// Is this screen still active or not
        /// If active : Its update and render normal into
        /// If not : It's no update and render
        /// </summary>
        public bool m_isActive;

        ///// <summary>
        ///// Is this screen overlapped by another screen or not
        ///// If overlapped : Its update may or may not occur , but it render is still running
        ///// If not : This screen is top screen 
        ///// </summary>
        //public bool m_isOverlap;

        public bool m_isNotUpdate;

        /// <summary>
        /// Is this screen has input focus or not
        /// </summary>
        public bool m_isFocusable;

        public string m_strScreenName;

        public int m_nIndex;

        public bool m_isInitialize;

        public IScreen(ScreenManager manager)
        {
            m_isActive = false;
            m_isFocusable = false;
            m_strScreenName = "";
            m_nIndex = -1;
            m_isInitialize = false;
            m_isNotUpdate = false;
            m_pScreenManager = manager;
        }

        /// <summary>
        /// Constructor of this class
        /// </summary>
        /// <param name="index">Indexed of this screen</param>
        /// <param name="strScreenName">Name of this screen</param>
        /// <param name="isActive">Is this screen active or not</param>
        /// <param name="isOverlap">Is this screen overlapped by another screen or not</param>
        public IScreen(int index, string strScreenName, bool isActive , ScreenManager manager)
        {
            m_isActive = isActive;
            m_strScreenName = strScreenName;
            m_nIndex = index;
            m_isFocusable = false;
            m_isInitialize = false;
            m_pScreenManager = manager;
        }

        virtual public void init()
        {
            m_isInitialize = true;
        }

        virtual public void update(float deltaTime)
        {
            
        }

        virtual public void render()
        {

        }

        virtual public void processInput(float deltaTime)
        {

        }
    }
}
